package com.lxw.mvpframe.presenter

import java.lang.ref.WeakReference

/**
 * 猿代码： Lxw
 * Email: China2021@126.com
 * 时间轴： 2018年 03月 08 日 下午4:20
 *
 * 逻辑层的积累，提供最基本的View和Presenter绑定与释放流程。采用弱引用，防止内存泄漏
 */
open class BasePresenter<T> {

    /** [BasePresenter] 提供最忌基本的View层和逻辑层的绑定与释放，采用弱引用的方式*/
    private var mViewRef: WeakReference<T>? = null


    /**
     * [view] 当前被绑定的view
     */
    fun attactView(view: T) {
        mViewRef = WeakReference(view)
    }


    /**
     * 释放被绑定的view
     */
    fun detachView() {
        mViewRef?.clear()
    }

    /**
     * 获取被绑定的view [mViewRef]
     */
    fun getView(): T? {
        return mViewRef?.get()
    }
}